<!DOCTYPE html>



  


<html class="theme-next gemini use-motion" lang="zh-Hans">
<head><meta name="generator" content="Hexo 3.8.0">
  <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, 
maximum-scale=1">
<script src="//cdn.bootcss.com/pace/1.0.2/pace.min.js"></script>
<meta name="theme-color" content="#222">

<script>
    (function () {
        if ('') {
            if (prompt('请输入文章密码') !== '') {
                alert('密码错误！');
                if (history.length === 1) {
                    location.replace("http://xxxxxxx.xxx"); // 这里替换成你的首页
                } else {
                    history.back();
                }
            }
        }
    })();
</script>


  
  
    
    
  <script src="/lib/pace/pace.min.js?v=1.0.2"></script>
  <link href="/lib/pace/pace-theme-minimal.min.css?v=1.0.2" rel="stylesheet">







<meta http-equiv="Cache-Control" content="no-transform">
<meta http-equiv="Cache-Control" content="no-siteapp">
















  
  
  <link href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css">







<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css">

<link href="/css/main.css?v=5.1.4" rel="stylesheet" type="text/css">


  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png?v=5.1.4">


  <link rel="mask-icon" href="/images/logo.svg?v=5.1.4" color="#222">





  <meta name="keywords" content="C++,Algorithm,">










<meta name="description" content="求素数 - 试除法/筛法  题目 试除法 筛法   求素数的几种方法，与对号入座0 0。 题目  请实现一个函数，对于给定的整型参数 N，该函数能够把自然数中，小于 N 的质数，从小到大打印出来。 请实现一个函数，对于给定的整型参数 N，该函数能够从小到大，依次打印出自然数中最小的 N 个质数。   下面由浅入深来剖析这道题目。">
<meta name="keywords" content="C++,Algorithm">
<meta property="og:type" content="article">
<meta property="og:title" content="Methods of finding prime numbers">
<meta property="og:url" content="http://sabistian.cn/2019/09/05/Methodsoffindingprimenumbers/index.html">
<meta property="og:site_name" content="Sabistian    |      Dear">
<meta property="og:description" content="求素数 - 试除法/筛法  题目 试除法 筛法   求素数的几种方法，与对号入座0 0。 题目  请实现一个函数，对于给定的整型参数 N，该函数能够把自然数中，小于 N 的质数，从小到大打印出来。 请实现一个函数，对于给定的整型参数 N，该函数能够从小到大，依次打印出自然数中最小的 N 个质数。   下面由浅入深来剖析这道题目。">
<meta property="og:locale" content="zh-Hans">
<meta property="og:image" content="https://sabistianblogimg.oss-cn-beijing.aliyuncs.com/%E7%B4%A0%E6%95%B0.gif">
<meta property="og:updated_time" content="2019-09-04T18:05:28.945Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Methods of finding prime numbers">
<meta name="twitter:description" content="求素数 - 试除法/筛法  题目 试除法 筛法   求素数的几种方法，与对号入座0 0。 题目  请实现一个函数，对于给定的整型参数 N，该函数能够把自然数中，小于 N 的质数，从小到大打印出来。 请实现一个函数，对于给定的整型参数 N，该函数能够从小到大，依次打印出自然数中最小的 N 个质数。   下面由浅入深来剖析这道题目。">
<meta name="twitter:image" content="https://sabistianblogimg.oss-cn-beijing.aliyuncs.com/%E7%B4%A0%E6%95%B0.gif">



<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/',
    scheme: 'Gemini',
    version: '5.1.4',
    sidebar: {"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},
    fancybox: true,
    tabs: true,
    motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
    duoshuo: {
      userId: '0',
      author: '博主'
    },
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>



  <link rel="canonical" href="http://sabistian.cn/2019/09/05/Methodsoffindingprimenumbers/">





  <title>Methods of finding prime numbers | Sabistian    |      Dear</title>
  








</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">

  
  
    
  

  <div class="container sidebar-position-left page-post-detail">
    <div class="headband"></div>

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/" class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">Sabistian    |      Dear</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
      
        <p class="site-subtitle"></p>
      
  </div>

  <div class="site-nav-toggle">
    <button>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-home"></i> <br>
            
            首页
          </a>
        </li>
      
        
        <li class="menu-item menu-item-about">
          <a href="/about/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-user"></i> <br>
            
            关于
          </a>
        </li>
      
        
        <li class="menu-item menu-item-tags">
          <a href="/tags/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-tags"></i> <br>
            
            标签
          </a>
        </li>
      
        
        <li class="menu-item menu-item-categories">
          <a href="/categories/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-th"></i> <br>
            
            分类
          </a>
        </li>
      
        
        <li class="menu-item menu-item-archives">
          <a href="/archives/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-archive"></i> <br>
            
            归档
          </a>
        </li>
      

      
    </ul>
  

  
</nav>



 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://sabistian.cn/2019/09/05/Methodsoffindingprimenumbers/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="邱灵雨">
      <meta itemprop="description" content>
      <meta itemprop="image" content="/images/headicon.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Sabistian    |      Dear">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">Methods of finding prime numbers</h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2019-09-05T01:23:09+08:00">
                2019-09-05
              </time>
            

            

            
          </span>

          
            <span class="post-category">
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/杂项/" itemprop="url" rel="index">
                    <span itemprop="name">杂项</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        <h1 id="求素数-试除法-筛法"><a href="#求素数-试除法-筛法" class="headerlink" title="求素数 - 试除法/筛法"></a>求素数 - 试除法/筛法</h1><blockquote>
<ul>
<li>题目</li>
<li>试除法</li>
<li>筛法</li>
</ul>
</blockquote>
<p>求素数的几种方法，与对号入座0 0。</p>
<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><blockquote>
<ul>
<li>请实现一个函数，对于给定的整型参数 N，该函数能够把自然数中，小于 N 的质数，从小到大打印出来。</li>
<li>请实现一个函数，对于给定的整型参数 N，该函数能够从小到大，依次打印出自然数中最小的 N 个质数。</li>
</ul>
</blockquote>
<p>下面由浅入深来剖析这道题目。</p>
<a id="more"></a> 

<h2 id="试除法"><a href="#试除法" class="headerlink" title="试除法"></a>试除法</h2><p>　　“试除”，顾名思义，就是不断地尝试能否整除。比如要判断自然数 x 是否质数，就不断尝试小于 x 且大于 1 的自然数，只要有一个能整除，则 x 是合数；否则，x 是质数。显然，试除法是最容易想到的思路。也是很平庸的思路。但是平庸中也是要分三六九等….</p>
<ul>
<li><p>Level 1<br>在试除法中，最土的做法，就是：假设要判断 x 是否为质数，就从 2 一直尝试到x-1。整除即非质数，这种做法，其效率是最差的。</p>
</li>
<li><p>Level 2<br>稍微想一下就知道：x 如果有（除了自身以外的）质因数，那也肯定会小于等于 x/2，所以，从 2 一直尝试到 x/2 即可。这一下子就少了一半的工作量，但依然效率不是很好。</p>
</li>
<li><p>Level 3<br>再仔细想一下：除了 2 以外，所有可能的质因数都是奇数。所以，就先尝试 2，然后再尝试从 3 开始一直到 x/2 的所有奇数。这一下子，工作量又少了一半。这种思路是最奇怪的..一瓶不满半瓶咣当.</p>
</li>
<li><p>Level 4<br>一般的程序员：从 2 一直尝试√x，就可以了。为什么只要到 √x 即可？<br>　　解释一下：<br>　　因数都是【成对】出现。比如，100的因数有：1和100，2和50，4和25，5和20，10和10。成对的因数，其中一个必然小于等于100的开平方，另一个大于等于100的开平方。至于严密的数学证明，反证法?
　　</p>
</li>
<li><p>Level 5<br>按照前面的思路，先尝试 2，然后再针对 3 到 √x 的所有【奇数】进行试除，感觉面试的话这样讲就不会因为这道题被pass掉吧.差不多了就。</p>
</li>
</ul>
<p>还有能优化的地方，因为没必要去算所有的奇数,比如：要判断 101 是否质数，101 的根号取整后是 10，那么，需要尝试的奇数分别是：3，5，7，9。但是你发现没有，对 9 的尝试是多余的。不能被 3 整除，必然不能被 9 整除……<br>顺着这个思路走下去，就能发现，<strong>只要尝试小于 √x 的【质数】即可。而这些质数，恰好前面已经算出来了</strong>。
把前面计算得到的结果保存起来，用于后面试除，数字大的时候就提高了很多效率.<br>这就是<strong>用空间换时间</strong><br>欸，这样就刚刚好.需要聪明一点又不用太努力学习就可以了^_^</p>
<h2 id="筛法"><a href="#筛法" class="headerlink" title="筛法"></a>筛法</h2><p>　　爱学习的孩子才会该会的方法.0 0。百科解释在<a href="https://zh.wikipedia.org/wiki/%E5%9F%83%E6%8B%89%E6%89%98%E6%96%AF%E7%89%B9%E5%B0%BC%E7%AD%9B%E6%B3%95" target="_blank" rel="noopener">这里</a>, 发明人是古希腊的大刘-埃拉托斯特尼,春秋战国时他用简单的几何方法，测量出了地球的周长、地球与月亮的距离、地球与太阳的距离、赤道与黄道的夹角.结果和当代科学家算的也差不多少。要知道明朝的时候咱们还是天圆地方、天狗食月吧。。<br>言归正传：<br>　　筛法不仅仅是一种具体的方法。<strong>【筛法还是一种很普适的思想】</strong>，在处理很多复杂问题的时候，都可以看到筛法的影子。那么，筛法如何求质数，说起来很简单：<br>　　首先，2是公认最小的质数，所以，先把所有2的倍数去掉；然后剩下的那些大于2的数里面，最小的是3，所以3也是质数；然后把所有3的倍数都去掉，剩下的那些大于3的数里面，最小的是5，所以5也是质数……<br>　　上述过程不断重复，就可以把某个范围内的合数全都除去（就像被筛子筛掉一样），剩下的就是质数了。<br>　　<img src="https://sabistianblogimg.oss-cn-beijing.aliyuncs.com/%E7%B4%A0%E6%95%B0.gif" alt="求素数"><br>　　其实很明显，筛法的效率是高于试除法的，试除法的效率并不是以n为底数的算法，筛法则是以n为底数的算法.</p>
<h3 id="如何确定质数的分布范围"><a href="#如何确定质数的分布范围" class="headerlink" title="如何确定质数的分布范围"></a>如何确定质数的分布范围</h3><p>对于题目1，这个自然不是问题。因为在题目1中，质数的分布范围就是 N，已经给出了，很好办。<br>对于需求2, 素数的分布是有规律的.在离散数学里好像是学过一个素数定理还是欧拉函数的东西，会有求范围n之内的素数个数的公式，如：x/ln(x)。假设要估计1,000,000以内有多少质数，用该公式算出是72,382个，而实际有78,498个，误差约8个百分点。该公式的特点是：估算的范围越大，偏差率越小。<br>有了素数定理，就可以根据要打印的质数个数，反推出这些质数分布在多大的范围内。因为这个质数分布公式有一定的误差（通常小于15%）。为了保险起见，把反推出的素数分布范围再稍微扩大15%，应该就足够了。</p>
<h3 id="优化"><a href="#优化" class="headerlink" title="优化"></a>优化</h3><p>优化的话有两种思路，<strong>空间优化</strong>和<strong>时间优化</strong>。这么筛的话需要很大的空间把所有的数都保存起来，空间优化就可以用标志位的思想去存，比如1-100中的质数，我只需知道哪个被筛掉了，0/1来作为标记，最后通过下标获值，这样把数字从int 变成 bool 就变成原空间的1/4，进一步换成纯bit STL中的BiteMap去存，就变成了bool所占空间的1/8.这样的话空间就优化了很多.</p>
<p>时间优化就相对复杂一点，在编程上加以处理，思想就是：<strong>使每个合数只被自己最小的质数因子标记一次</strong>。也就是线性筛法（又名欧拉筛），代码如下</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">int</span> tot = <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span>(<span class="keyword">auto</span> i = <span class="number">2</span>; i &lt; N;++i)</span><br><span class="line">&#123;</span><br><span class="line">  <span class="keyword">if</span> (!check[i])</span><br><span class="line">  &#123;</span><br><span class="line">    prime[tot++] = i; <span class="comment">//筛法每次拿最小的值</span></span><br><span class="line">  &#125;             </span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">auto</span> j = <span class="number">0</span>; j &lt; tot; ++j)  <span class="comment">//筛数</span></span><br><span class="line">  &#123;</span><br><span class="line">    <span class="keyword">if</span> (i * prime[j] &gt; N)</span><br><span class="line">    &#123;</span><br><span class="line">      <span class="keyword">break</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    check[i*prime[j]] = <span class="number">1</span>;</span><br><span class="line">    <span class="keyword">if</span> (i % prime[j] == <span class="number">0</span>)</span><br><span class="line">    &#123;</span><br><span class="line">      <span class="keyword">break</span>; <span class="comment">// 如果再往后，prime[j] 就不是 i*prime[j] 的最小质因子了，所以不需要继续了</span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>就这个break，稍微有一点绕。思考下，按照代码逻辑prime[j]是i的最小质因子，如果向后继续算下去，任何质数与i的乘积，也就是新的i*prime[j]，它的最小质因子也一定是i，而不是新的prime[j]，打破了算法的规则。</p>
<p>由于所有的数字只被标记了一次，所以时间复杂度为O(N).</p>
<p><a href="https://program-think.blogspot.com/2011/12/prime-algorithm-1.html?tdsourcetag=s_pctim_aiomsg" target="_blank" rel="noopener">参考博客</a></p>
<p>男篮世界杯没了呀0 0..周琦这事估计你这一辈子都别想跑…</p>

      
    </div>
    
    
    

    

    
      <div>
        <div style="padding: 10px 0; margin: 20px auto; width: 90%; text-align: center;">
  <div></div>
  <button id="rewardButton" disable="enable" onclick="var qr = document.getElementById('QR'); if (qr.style.display === 'none') {qr.style.display='block';} else {qr.style.display='none'}">
    <span>打赏</span>
  </button>
  <div id="QR" style="display: none;">

    
      <div id="wechat" style="display: inline-block">
        <img id="wechat_qr" src="/images/wechatpay.jpg" alt="邱灵雨 微信支付">
        <p>微信支付</p>
      </div>
    

    
      <div id="alipay" style="display: inline-block">
        <img id="alipay_qr" src="/images/alipay.jpg" alt="邱灵雨 支付宝">
        <p>支付宝</p>
      </div>
    

    

  </div>
</div>

      </div>
    

    
      <div>
        
      <ul class="post-copyright">
         <li class="post-copyright-link">
          <strong>本文作者：</strong>
          <a href="/" title="欢迎访问 邱灵雨 的个人博客">邱灵雨</a>
        </li>

        <li class="post-copyright-link">
          <strong>本文链接：</strong>
          <a href="http://sabistian.cn/2019/09/05/Methodsoffindingprimenumbers/" title="Methods of finding prime numbers">http://sabistian.cn/2019/09/05/Methodsoffindingprimenumbers/</a>
        </li>

        <li class="post-copyright-license">
          <strong>版权声明： </strong>
          本文由 邱灵雨 原创，采用 <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh" rel="license" target="_blank">保留署名-非商业性使用-禁止演绎 4.0-国际许可协议</a> <br>转载请保留以上声明信息！
        </li>
      </ul>
<div style="text-align:center;color: #ccc;font-size:14px;">
------ 本文结束 ------</div>
      </div>
    

    <footer class="post-footer">
      
      
        <div class="post-tags">
          
            <a href="/tags/C/" rel="tag"><i class="fa fa-tag"></i> C++</a>
          
            <a href="/tags/Algorithm/" rel="tag"><i class="fa fa-tag"></i> Algorithm</a>
          
        </div>
      

      
      
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/2019/08/17/蓝图中的C++编程(一)--蓝图调用C++函数&C++调用蓝图/" rel="next" title="蓝图中的C++ 编程">
                <i class="fa fa-chevron-left"></i> 蓝图中的C++ 编程
              </a>
            
          </div>

          <span class="post-nav-divider"></span>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/2019/10/23/功能模块-战绩榜/" rel="prev" title="功能模块 - 战绩榜">
                功能模块 - 战绩榜 <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </div>
  
  
  
  </article>



    <div class="post-spread">
      
    </div>
  </div>


          </div>
          


          

  



        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    
    <div class="sidebar-inner">

      

      
        <ul class="sidebar-nav motion-element">
          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap">
            文章目录
          </li>
          <li class="sidebar-nav-overview" data-target="site-overview-wrap">
            站点概览
          </li>
        </ul>
      

      <section class="site-overview-wrap sidebar-panel">
        <div class="site-overview">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            
              <img class="site-author-image" itemprop="image" src="/images/headicon.png" alt="邱灵雨">
            
              <p class="site-author-name" itemprop="name">邱灵雨</p>
              <p class="site-description motion-element" itemprop="description">灵雨既零</p>
          </div>

          <nav class="site-state motion-element">

            
              <div class="site-state-item site-state-posts">
              
                <a href="/archives/">
              
                  <span class="site-state-item-count">21</span>
                  <span class="site-state-item-name">日志</span>
                </a>
              </div>
            

            
              
              
              <div class="site-state-item site-state-categories">
                <a href="/categories/index.html">
                  <span class="site-state-item-count">7</span>
                  <span class="site-state-item-name">分类</span>
                </a>
              </div>
            

            
              
              
              <div class="site-state-item site-state-tags">
                <a href="/tags/index.html">
                  <span class="site-state-item-count">20</span>
                  <span class="site-state-item-name">标签</span>
                </a>
              </div>
            

          </nav>

          

          
            <div class="links-of-author motion-element">
                
                  <span class="links-of-author-item">
                    <a href="https://github.com/sabistian" target="_blank" title="GitHub">
                      
                        <i class="fa fa-fw fa-github"></i>GitHub</a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a href="mailto:sebistian@163.com" target="_blank" title="Mail">
                      
                        <i class="fa fa-fw fa-envelope"></i>Mail</a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a href="https://weibo.com/5975979965/profile?rightmod=1&wvr=6&mod=personinfo" target="_blank" title="Weibo">
                      
                        <i class="fa fa-fw fa-weibo"></i>Weibo</a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a href="https://www.zhihu.com/people/kuai-shen-l/activities" target="_blank" title="ZhiHu">
                      
                        <i class="fa fa-fw fa-globe"></i>ZhiHu</a>
                  </span>
                
            </div>
          

          
          

          
          

          

        </div>
      </section>

      
      <!--noindex-->
        <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
          <div class="post-toc">

            
              
            

            
              <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#求素数-试除法-筛法"><span class="nav-number">1.</span> <span class="nav-text">求素数 - 试除法/筛法</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#题目"><span class="nav-number">1.1.</span> <span class="nav-text">题目</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#试除法"><span class="nav-number">1.2.</span> <span class="nav-text">试除法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#筛法"><span class="nav-number">1.3.</span> <span class="nav-text">筛法</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#如何确定质数的分布范围"><span class="nav-number">1.3.1.</span> <span class="nav-text">如何确定质数的分布范围</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#优化"><span class="nav-number">1.3.2.</span> <span class="nav-text">优化</span></a></li></ol></li></ol></li></ol></div>
            

          </div>
        </section>
      <!--/noindex-->
      

      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>

<div class="copyright">&copy; <span itemprop="copyrightYear">2020</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">邱灵雨</span>

  
</div>

<div class="powered-by">
<i class="fa fa-user-md"></i><span id="busuanzi_container_site_uv">
  本站访客数:<span id="busuanzi_value_site_uv"></span>
</span>
</div>


  <div class="powered-by">由 <a class="theme-link" target="_blank" href="https://hexo.io">Hexo</a> 强力驱动</div>



  <span class="post-meta-divider">|</span>



  <div class="theme-info">主题 &mdash; <a class="theme-link" target="_blank" href="https://github.com/iissnan/hexo-theme-next">NexT.Gemini</a> v5.1.4</div>




        







        
      </div>
    </footer>

    
      <div class="back-to-top">
        <i class="fa fa-arrow-up"></i>
        
      </div>
    

    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  












  
  
    <script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>
  

  
  
    <script type="text/javascript" src="/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
  

  
  
    <script type="text/javascript" src="/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
  

  
  
    <script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
  


  


  <script type="text/javascript" src="/js/src/utils.js?v=5.1.4"></script>

  <script type="text/javascript" src="/js/src/motion.js?v=5.1.4"></script>



  
  


  <script type="text/javascript" src="/js/src/affix.js?v=5.1.4"></script>

  <script type="text/javascript" src="/js/src/schemes/pisces.js?v=5.1.4"></script>



  
  <script type="text/javascript" src="/js/src/scrollspy.js?v=5.1.4"></script>
<script type="text/javascript" src="/js/src/post-details.js?v=5.1.4"></script>



  


  <script type="text/javascript" src="/js/src/bootstrap.js?v=5.1.4"></script>



  


  




	





  





  












  





  

  

  

  
  

  

  

  

</body>
</html>
